package com.huike.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huike.dto.ReportPageDto;
import com.huike.entity.*;
import com.huike.result.PageResult;
import com.huike.result.Result;
import com.huike.vo.*;

import java.time.LocalDate;
import java.util.List;

public interface ReportService {
    /**
     * 查询字典表
     *
     * @return Result<List < SysDictData>>
     */
    List<SysDictData>  getSysDictData(String dictType);

    /**
     * 客户统计查询
     *
     * @param beginDate LocalDate
     * @param endDate   LocalDate
     * @return CustomerReportVo
     */
    CustomerReportVo customerReport(LocalDate beginDate, LocalDate endDate);

    /**
     * 查询学科客户统计
     * @param beginDate LocalDate
     * @param endDate LocalDate
     * @return SubjectCustomerReportVo
     */
    SubjectCustomerReportVo subjectCustomerReport(LocalDate beginDate, LocalDate endDate);

    /**
     * 客户统计搜索
     *
     * @param dto ReportPageDto
     * @return PageResult<Customer>
     */
    PageResult<Customer> customerReportSearch(ReportPageDto dto);

    /**
     * 销售额统计
     *
     * @param beginDate LocalDate
     * @param endDate   LocalDate
     * @return SaleReportVo
     */
    SaleReportVo saleReport(LocalDate beginDate, LocalDate endDate);

    PageResult<Sale> saleReportSearch(ReportPageDto dto);

    ClueReportVo clueReport(LocalDate beginDate,LocalDate endDate);

    PageResult<Clue> clueReportSearch(ReportPageDto dto);

    PageResult<ChannelReport> channelReportSearch(ReportPageDto dto);

    ChannelCustomerReportVo channelReport(LocalDate beginDate, LocalDate endDate);

    ClueInvertVo clueInvert(LocalDate beginDate, LocalDate endDate);
}
